#   1、如何为函数定义keyword-only参数（写出个例子即可）
def kwonly(*args, a, b=2):
    return a + b


print(kwonly(a=3, b=4))

'''
2、什么是LEGB，请解释
    L，指代local本地变量，如函数内定义的变量
    E，指代nonlocal变量，函数外层的变量，但不包含全局变量
    G，指代global变量，也就是全局变量,全局可用
    B，指代builder-in变量，也就是PVM环境内建的变量,任何地方可用，如print
------------------------------------------------------------------
3. 使用本周学习的技术改造第一周的计算器实现，其目标如下：

   1. 运行后提示让用户输入一个数字
   2. 提示输入操作符（+ - * /）
   3. 再次提示输入一个数字
   4. 打印计算结果
   5. 在不退出程序的前提下，可以允许用户继续输入新一组数据计
   6. 尽可能改善用户体验（新需求）
        改善点如下：
            A、针对数字的录入采用 isnumeric方式精减代码
            B、增加了除零报错的预判，并予以提示
'''
def num_input():
    num = input('请输入一个数字：')
    if num.isnumeric():
        return float(num)
    else:
        print('输入内容并非数字，请重新输入数字：')
        num = num_input()


# 输入一个符号，返回一个数字代表计算符+-*/对应0123
def cal_input():
    c = input('请输入计算的符号:')
    index = None
    if len(c) == 1 and c in '+-*/':
        index = '+-*/'.index(c)
    else:
        print('输入错误，请重新输入计算符号(+-*/)：')
        index = cal_input()
    return index


def cal():
    num1 = num_input()
    c = cal_input()
    num2 = num_input()
    c_str = '+-*/'[c]
    ret = None
    if c == 0:
        ret = num1 + num2
    elif c == 1:
        ret = num1 - num2
    elif c == 2:
        ret = num1 * num2
    else:
        if num2 == 0:
            print('除法运算中，被除数不得为0，请重新输入')
            return
        else:
            ret = num1 / num2
    print(f'{num1} {c_str} {num2} = {ret}')


run = True
while run:
    cal()
    r = input('输入Y退出，其他则继续使用')
    if r.lower() == "y":
        run = False